﻿// <copyright file="Vote.cs" company="Microsoft Corporation">
// Copyright (c) 2009 Microsoft Corporation All Rights Reserved
// </copyright>
// <author>Michael S. Scherotter</author>
// <email>mischero@microsoft.com</email>
// <date>2009-04-28</date>
// <summary>Vote class definition</summary>

namespace NYTimes.Data
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// A congressional vote
    /// </summary>
    public class Vote
    {
        /// <summary>
        /// Gets or sets the Congress number
        /// </summary>
        public int Congress { get; set; }

        /// <summary>
        /// Gets or sets the session number
        /// </summary>
        public int Session { get; set; }

        /// <summary>
        /// Gets or sets the chamber for the vote
        /// </summary>
        public Chamber Chamber { get; set; }

        /// <summary>
        /// Gets or sets the roll call number
        /// </summary>
        public int RollCall { get; set; }

        /// <summary>
        /// Gets or sets the Bill
        /// </summary>
        public Bill Bill { get; set; }

        /// <summary>
        /// Gets or sets the question
        /// </summary>
        public string Question { get; set; }

        /// <summary>
        /// Gets or sets the description
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// Gets or sets the vote type
        /// </summary>
        public string VoteType { get; set; }

        /// <summary>
        /// Gets or sets the vote date and time
        /// </summary>
        public DateTime DateTime { get; set; }

        /// <summary>
        /// Gets or sets the vote result
        /// </summary>
        public string Result { get; set; }

        /// <summary>
        /// Gets or sets the member positions
        /// </summary>
        public IEnumerable<VotePosition> Positions { get; set; }

        /// <summary>
        /// Gets or sets the Democratic Party totals
        /// </summary>
        public VoteTotal Democratic { get; set; }

        /// <summary>
        /// Gets or sets the Republican Party totals
        /// </summary>
        public VoteTotal Republican { get; set; }

        /// <summary>
        /// Gets or sets the independent totals
        /// </summary>
        public VoteTotal Independent { get; set; }

        /// <summary>
        /// Gets or sets the total voting numbers
        /// </summary>
        public VoteTotal Total { get; set; }

        /// <summary>
        /// Gets or sets the vacant seats
        /// </summary>
        public IEnumerable<VacantSeat> VacantSeats { get; set; }

        /// <summary>
        /// Outputs the book detail properties
        /// </summary>
        /// <returns>a string with named value pairs</returns>
        public override string ToString()
        {
            return Synergist.Utility.GetProperties(this);
        }
    }
}
